In high performance storage arrays software features continuously run concurrently to maximize system performance. As a result, when there is a failure, many types of operations may be interrupted and need to be recovered after restart. Some operations are allowed to work on the same set of logical units and thus may journal inflight transactions against the same logical unit address. During recovery, dead lock and race conditions may occur if certain operations attempt to work on the journal entries against the same addresses at the same time.